package Top101K;

import java.util.HashMap;
import java.util.Map;

/**
 * @Author quan
 * @Description 数组中只出现一次的两个数字
 * @Date 2023/11/20 12:21
 */
public class BM52_FindNumsAppearOnce {
      /**
     * 一个整型数组里除了两个数字只出现一次，其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
     * @param nums  [1,2,3,3,2,9]
     * @return   [1,9]
     */
    public int[] FindNumsAppearOnce (int[] nums) {
        // write code here
        //1-构建哈希表
        HashMap<Integer,Integer> map = new HashMap<>();
        //2-遍历数组，哈希表添加元素
        for (int i = 0; i < nums.length; i++) {
            if(!map.containsKey(nums[i])){
                map.put(nums[i],1);
            }else{
                map.put(nums[i],map.get(nums[i])+1);
            }
        }
        //3-遍历哈希表，找出value为1的两个元素，添加到res数组中。
        int[] res = new int[2];
        int index = 0;
        for(Map.Entry<Integer,Integer> m : map.entrySet()){
            if(m.getValue() == 1){
                res[index] = m.getKey();
                index++;
            }
        }
        return res;
    }
}
